/**
 * 
 */
package com.cxy.ch1.vola;

import com.cxy.tools.SleepTools;

/**
 * @ClassName: VolatileCase
 * @Description: TODO(演示Volatile的提供的可见性)
 * @author 菜徐鸭
 * @date 2020年4月13日
 *
 */
public class VolatileCase {
	private volatile static boolean ready;
	private static int number;

	//
	private static class PrintThread extends Thread {
		@Override
		public void run() {
			System.out.println("PrintThread is running.......");
			while (!ready);// 无限循环
			System.out.println("number = " + number);
		}
	}
	/**
	 * 
	 * 可见性又叫读写可见。即一个共享变量N，当有两个线程T1、T2同时获取了N的值，T1修改N的值，而T2读取N的值，可见性规范要求T2读取到的值必须是T1修改后的值。
	 * @param args
	 */
	public static void main(String[] args) {
		new PrintThread().start();
		SleepTools.second(1);
		number = 51;
		ready = true;
		SleepTools.second(5);
		System.out.println("main is ended!");
	}
}
